# 总结

"""
函数：
作用域：LFGB
L: local 本地 局部变量
F：encloseing 嵌套
G：Global 全局
B：built-in 内置函数
嵌套函数：
闭包：
    1. 内层函数
    2. 内层函数引用外层函数的变量
    3. 返回内层函数
    4. 函数作为外层函数的参数
使用装饰器：
@ 装饰器名
def 函数名():
    pass

# 总结函数
普通函数
    1. 无参数：
    def func():
        pass
    2. 有参数
        一般参数：
            def func(a,b):
                pass
        可变参数：
            def func(*args,**kwargs):  args 单个元素； kwargs：关键字参数
                pass
            func() 、func(1) 、func(a=1)
        默认值：
            def func(a=1,b=2):
                pass
            func(a=100) #关键字参数
            func(900) #默认给ａ赋值
    ３.　返回值
        没有返回值
            def func():
                pass

            x = func() ------->X=None
        有返回值：
            def func():
                return 'a','b' # 返回多个值

            x = func() ---------> x= ('a','b')
嵌套函数：------->闭包--------> 装饰器
    1.闭包：
        def  func():
            def wrapper():
                pass
            return wrapper()
    2. 装饰器：
        单层装饰器：
            def decorate(func):
                def wrapper(*args,**kwargs):  # 有参数和无参数都可以
                    pass
                return wrapper
            @decorate
            def house():
                pass
            @decorate()
            def new_house(a,b):
        多层装饰器：
            @deco2()
            @deco1()
            def func(a,b):
                pass
        装饰器带参数：
            def outer(a):
                def  decorate(func):
                    def wrapper(*args,**kwargs):
                        pass
                    return wrapper
                return decorate

            @outer(10)
            def house(10):
                pass
            @outer(100)
            def house(10):
                pass
匿名函数：lambada 函数：返回值
递归函数：自己调用自己

变量的作用域：
    global nonlocal
    globals locals
    LFGB



"""
